import { computed } from 'vue';
import { useStore } from "vuex";
//购物车相关的逻辑
export const usecommonCartEffect = (shopId) => {
    const store = useStore();
    const cartList = store.state.cartList
    const changeCartItemInfo = (shopId, productId, productInfo, num) => {
      store.commit("changeCartItemInfo", { shopId, productId, productInfo, num });
    };
    const shopName = computed(() => {
      const shopName = cartList[shopId]?.shopName || '';
      return shopName;
    });
    const productsList = computed(() => {
      const productList = cartList[shopId]?.productList || {};
      const notEmptyProductList = {}
      for(let i in productList) {
        const product = productList[i]
        if(product.count > 0) {
          notEmptyProductList[i] = product
        }
      }
      return notEmptyProductList;
    });
    const calculations = computed(() => {
      const productList = cartList[shopId]?.productList;
      const result = { total: 0, price: 0, allChecked: true };
      if (productList) {
        for (const i in productList) {
          const product = productList[i];
          result.total += product.count;
          if (product.check) {
            result.price += product.count * product.price;
          }
          if (product.count > 0 && !product.check) {
            result.allChecked = false;
          }
        }
      }
      //把价格的小数点精确到后两位数
      result.price = result.price.toFixed(2);
      //导出result
      return result;
    });
    return { changeCartItemInfo, shopName, productsList, calculations, cartList };
  };